#include<stdio.h>


//28.时间转换
// int main()
// {
//     int seconds = 0;
//     int h = 0;
//     int m = 0;
//     int s = 0;
//     scanf("%d",&seconds);
//     h = seconds/60/60;
//     m = seconds/60%60;
//     s = seconds%60;
//     printf("%d %d %d\n",h,m,s);
//     return 0;
// }

//29.总成绩和平均分计算
// int main()
// {   
//     double score[3] = {0};
//     scanf("%lf %lf %lf",&score[0],&score[1],&score[2]);
//     double sum = score[0] + score[1] +score[2];
//     double avg = sum/3.0;
//     printf("%.2lf %.2lf",sum,avg);
//     return 0;
// }

//30.KiKi和酸奶
// int main()
// {
//     int n = 0;//给的酸奶瓶数
//     int h = 0;//喝一瓶酸奶所用的时间
//     int m = 0;//给的总共时间
//     while(scanf("%d %d %d",&n,&h,&m) != EOF)
//     {
//         if(m%h)
//         {
//             printf("%d\n",n - m / h -1);
//         }
//         else
//         {
//             printf("%d\n",n - m / h);
//         }
//     }
//     return 0;
// }

//31.发布信息
// int main()
// {
//     printf("I lost my cellphone!");
//     return 0;
// }

//32.输出学生信息
// int main()
// {
//     printf("Name    Age    Gender\n");
//     printf("---------------------\n");
//     printf("Jack    18    man\n");
//     return 0;
// }

//33.计算平均成绩
// int main()
// {
//     int score[5] = {0};
//     scanf("%d %d %d %d %d",&score[0],&score[1],&score[2],&score[3],&score[4]);
//     int i = 0;
//     double sum = 0;
//     for(i = 0;i < 5;i ++)
//     {
//         sum += score[i];
//     }
//     printf("%.1lf",sum/5);
//     return 0;
// }

//34. 进制A+B
// int main()
// {
//     int a = 0;
//     int b = 0;
//     scanf("%x %o",&a,&b);
//     int sum = a + b;
//     printf("%d\n",sum);
// }

//35.网购
// int main()
// {
//     double price = 0.0;
//     int month =0;
//     int day = 0;
//     int flag = 0;
//     double cut = 1.0;
//     double last = 0.0;
//     scanf("%lf %d %d %d",&price,&month,&day,&flag);
//     if(month == 11 && day == 11)
//     {
//         cut = 0.7;
//     }
//     else if(month == 12 && day == 12)
//     {
//         cut = 0.8;
//     }
//     last = price * cut - flag * 50;
//     if(last < 0.0)
//     {
//         printf("%.2lf\n",0,0);
//     }
//     else
//     {
//         printf("%.2lf\n",last);
//     }
//     return 0;
// }

//36. 争夺前五名
#include<stdlib.h>
//使用库函数排序
int cmp_int(const void* e1,const void* e2)
{
    return *(int*)e1 -*(int*)e2;
}
int main()
{
    int n =0;
    int arr[40] = {0};
    scanf("%d",&n);
    int i = 0;
    for(i = 0;i < n;i ++)
    {
        scanf("%d",&arr[i]);
    }
    //排序---升序---后5个元素---就是最高的前5个成绩
    //自己实现排序-冒泡排序
    // for(i = 0;i < n-i;i++)//趟数
    // {
    //     //一趟冒泡排序要进行多少元素的比较
    //     int j = 0;
    //     for(j = 0;j < n - 1 -i; j++)
    //     {
    //         if((arr[j] > arr[j+1]))//升序
    //         {
    //             int tmp = arr[j];
    //             arr[j] = arr[j +1];
    //             arr[j+1] = tmp;//元素交换
    //         }
    //     }   
    // }
    qsort(arr, n, 4, cmp_int);//引用库函数
    for(i = n - 1;i >= n-5;i --)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}